什么是BGP路由属性?BGP13条选路规则你还记得吗?
来源:网络技术联盟站
边界网关协议(BGP)是互联网上广泛使用的一种路径矢量协议,负责在不同自治系统(AS)之间交换路由信息,确保网络的有效可达性。其中,BGP的路由属性是该协议的关键组成部分,它们描述了路由的各种特征,使得BGP能够灵活地过滤和选择路由信息。本文将深入研究BGP路由属性,探讨其分类、特性以及在网络设计和优化中的重要作用。
BGP路由属性概述
BGP路由属性是一组参数,用于进一步描述特定路由的属性。这些属性的存在使得BGP能够根据网络的需求对路由进行精细的控制。在BGP的路由更新消息中,这些属性提供了丰富的信息,从而让网络管理员能够实施各种策略,例如负载均衡、路径选择和拓扑优化。
BGP路由属性可以分为四个主要类别:
公认必须遵循 公认可选 可选过渡 可选非过渡
公认必须遵循(Well-known mandatory)
这一类属性是所有BGP路由器都必须能够理解的,而且在BGP Update消息中必须存在。缺少这些属性将导致路由信息出错。
ORIGIN属性
ORIGIN属性是BGP路由属性中的一项,用于定义路由信息的来源,标记一条路由是如何成为BGP路由的。在BGP Update消息中,这个属性帮助BGP路由器识别路由的起源,有助于路由选择和网络设计。ORIGIN属性有以下三种类型:
1、IGP(Interior Gateway Protocol)
优先级最高的ORIGIN属性类型,表示该路由产生于本自治系统(AS)内部,通常是由IGP协议(如OSPF或IS-IS)生成的。
如果一条路由的ORIGIN属性被标记为IGP,说明这个路由是由本地AS内部的IGP协议产生的,可能是直连网络或内部的IGP学习到的。
# 配置IGP产生的路由
router bgp [AS号]
network [本地网络] mask [子网掩码] route-map IGP_ORIGIN_CONFIG
!
route-map IGP_ORIGIN_CONFIG permit 10
set origin igp
2、EGP(Exterior Gateway Protocol)
优先级次之的ORIGIN属性类型,表示该路由通过EGP协议学习而来,即从其他AS获取的。
如果一条路由的ORIGIN属性被标记为EGP,说明这个路由是通过BGP协议从其他AS学习而来的。
# 配置EGP学习的路由
router bgp [AS号]
neighbor [邻居_IP] remote-as [对方AS号]
!
3、incomplete
优先级最低的ORIGIN属性类型,表示路由的来源无法确定。这并不表示路由不可达,而是表示BGP路由器无法确定路由的确切来源,可能是因为引入了其他路由协议的信息。
如果一条路由的ORIGIN属性被标记为incomplete,说明该路由的来源不明确,可能是由于与其他协议互操作而引入的。
# 配置来源无法确定的路由
router bgp [AS号]
network [某网络] mask [子网掩码]
!
AS_PATH
AS_PATH属性是BGP Update消息中的必需属性,用于记录路由所经过的AS序列。这个属性对于BGP路由器检测和防止路由环路至关重要。AS_PATH的格式可以是一个AS序列的列表,也可以是一个空列表。
例子:考虑一个AS路径为AS1 - AS2 - AS3 - AS1的路由。在AS_PATH属性中,这个路径可能被表示为1, 2, 3。BGP路由器在接收到这个路由时,会检查AS_PATH,如果它发现AS3已经存在于AS_PATH中,就会判定这是一个环路,从而避免选择这个路由。
NEXT_HOP
NEXT_HOP属性定义了通往目标网络的下一跳IP地址。在BGP中,这是一个关键的属性,因为它直接影响路由器选择路径的决策。如果两条路径具有相同的前缀,但具有不同的NEXT_HOP值,BGP路由器会选择具有最低NEXT_HOP IP地址的路径。
例子:假设有两条路径,路径A的NEXT_HOP是10.0.0.1,路径B的NEXT_HOP是10.0.0.2。如果这两条路径具有相同的前缀,路由器将选择具有NEXT_HOP为10.0.0.1的路径。
公认可选属性
这一类属性是所有BGP路由器可以选择是否支持的,不过,如果支持,就必须能够正确解释。这种属性在BGP Update消息中不是必须的,允许网络管理员根据具体情况来选择是否携带。
LOCAL_PREF属性
LOCAL_PREF属性是BGP中的一个本地属性,用于指定进入AS后的首选路径。它只在AS内部有效,不传播到其他AS。较高的LOCAL_PREF值表示更优先的路径。
示例: 假设有两个BGP路由器,R1和R2,它们都连接到相同的AS。R1的LOCAL_PREF设置为200,而R2的设置为150。其他BGP路由器在该AS中会更倾向于选择经过R1的路径,因为它具有更高的LOCAL_PREF值。
ATOMIC_AGGREGATE属性
ATOMIC_AGGREGATE属性表示一个聚合路由是否被原子聚合。原子聚合意味着聚合路由中包含的所有子网都应该具有相同的路径属性。
示例: 假设有一个聚合路由,包含两个子网:192.168.1.0/24 和 192.168.2.0/24。如果这两个子网具有不同的路径属性,该聚合路由将被标记为非原子聚合。
可选过渡属性
这些属性在AS之间具有传递性,即使某个BGP路由器不支持这个属性,它仍然会接收带有此属性的路由,并将这个属性传递给其他对等体。
AGGREGATOR属性
AGGREGATOR属性是BGP路由属性中的一项,属于可选过渡属性,用于标识聚合了多个路由的路由器信息,表示聚合了多个具体路由的路由器的信息。它包含了两个主要字段,AS号(AS_SEQUENCE)和路由器ID(address)。
在BGP中,通过聚合多个具体的路由,可以减少路由表的大小,提高网络的效率。在聚合过程中,路由器会生成一个新的聚合路由,并为这个聚合路由添加AGGREGATOR属性。
# 配置聚合路由
router bgp [AS号]
aggregate-address [聚合地址] summary-only
!
在查看BGP路由表时,可以看到聚合路由的AGGREGATOR属性,这有助于了解这个聚合路由的来源。
show ip bgp [聚合地址]
COMMUNITY属性
COMMUNITY属性是BGP路由属性中的一项,属于可选过渡属性,用于标记和控制BGP路由的特定特性。这个属性允许BGP路由器为路由分配标签,以便在网络中实现更精细的控制和策略。它是一个32位的数值,通常表示为ASN:Value
,其中ASN是自治系统号,Value是具体的数值。
在BGP路由器上,可以通过设置route-map
或直接在BGP邻居配置中发送COMMUNITY属性。
# 配置route-map设置COMMUNITY属性
route-map SET_COMMUNITY permit 10
set community 65001:100
!
# 在BGP邻居配置中发送COMMUNITY属性
router bgp [AS号]
neighbor [邻居_IP] send-community
!
在查看BGP路由表时,可以看到每条路由的COMMUNITY属性,这有助于了解路由的特性和分类。
show ip bgp [目标网络]
可选非过渡属性
这些属性是BGP路由器可以选择是否支持的,但不会在传播过程中强制要求其他对等体支持。
MULTI_EXIT_DISC (MED)
MULTI_EXIT_DISC(MED)属性是BGP路由属性中的一项,属于可选非过渡属性,用于影响路由器选择到达目的地的最佳路径。该属性通常用于在同一AS内部的不同出口之间进行负载均衡,较低的MED值被认为是更有吸引力的路径。
在BGP路由器上,可以通过route-map
或直接在BGP邻居配置中设置MED值。
# 配置route-map设置MED属性
route-map SET_MED permit 10
set metric 100
!
# 在BGP邻居配置中设置MED属性
router bgp [AS号]
neighbor [邻居_IP] default-originate
neighbor [邻居
_IP] default-metric 100
!
在查看BGP路由表时,可以看到每条路由的MED属性,这有助于了解路径选择的度量。
show ip bgp [目标网络]
通过合理配置MED属性,网络管理员可以实现在同一AS内的多个出口之间进行负载均衡,优化流量分布,以提高网络的性能。MED属性的设置对于BGP内部路由选择非常重要,但需要谨慎配置,以确保满足网络设计和性能需求。
ORIGINATOR_ID属性
ORIGINATOR_ID属性用于防止路由反射器的路径反射导致路由环路。该属性指示产生路由更新的路由器的BGP Router ID。
示例: 在一个使用路由反射器的BGP网络中,ORIGINATOR_ID属性可以帮助防止路由环路。如果一个路由器收到了它自己的路由反射的更新,它可以检查ORIGINATOR_ID属性,并拒绝该更新,从而避免形成环路。
CLUSTER_LIST属性
CLUSTER_LIST属性用于记录路由经过的Cluster ID 列表。这也是为了在BGP网络中防止路由反射导致的环路问题。
示例: 假设有一个BGP网络,包含多个路由反射器组成的集群。CLUSTER_LIST属性会记录路由经过的Cluster ID,路由器在接收到路由反射器的更新时,可以检查CLUSTER_LIST属性,避免路由环路。
BGP路由属性的配置和调优
了解BGP路由属性的分类和功能后,网络管理员可以通过配置和调优这些属性来满足特定的网络需求和策略。
配置BGP基础设置
在BGP路由器上配置基础设置是保证BGP正常运行的关键步骤。这包括配置AS号、BGP Router ID、邻居关系等。确保这些基础设置正确配置是BGP网络稳定性的基石。
router bgp [AS号]
bgp router-id [Router ID]
neighbor [邻居IP地址] remote-as [对方AS号]
配置公认必须遵循属性
调整公认必须遵循属性,如AS_PATH和NEXT_HOP,可以影响路由的选择。通过合理配置这些属性,可以实现路由的合理选择和避免环路。
# 配置AS_PATH前缀的过滤
ip as-path access-list 1 permit ^$
route-map AS_PATH_FILTER permit 10
match as-path 1
router bgp [AS号]
neighbor [邻居IP地址] route-map AS_PATH_FILTER in
# 调整NEXT_HOP属性
router bgp [AS号]
neighbor [邻居IP地址] next-hop-self
配置公认可选属性
公认可选属性如LOCAL_PREF和ATOMIC_AGGREGATE可用于影响BGP路径选择和聚合行为。
# 配置LOCAL_PREF
router bgp [AS号]
neighbor [邻居IP地址] route-map LOCAL_PREF_CONFIG in
ip access-list standard LOCAL_PREF_FILTER
permit [目标网络]
route-map LOCAL_PREF_CONFIG permit 10
match ip address LOCAL_PREF_FILTER
set local-preference 200
# 配置ATOMIC_AGGREGATE
router bgp [AS号]
aggregate-address [聚合地址] summary-only
配置可选过渡属性
对于可选过渡属性如COMMUNITY和EXTENDED COMMUNITY,可以通过配置来实现更精细的路由控制和策略实施。
# 配置COMMUNITY
router bgp [AS号]
neighbor [邻居IP地址] send-community
# 配置EXTENDED COMMUNITY
router bgp [AS号]
neighbor [邻居IP地址] send-extcommunity
配置可选非过渡属性
对于可选非过渡属性如ORIGINATOR_ID和CLUSTER_LIST,可以通过配置来提高网络的稳定性和可靠性。
# 配置ORIGINATOR_ID
router bgp [AS号]
bgp cluster-id [Cluster ID]
neighbor [邻居IP地址] route-map ORIGINATOR_ID_CONFIG in
ip as-path access-list 2 permit ^$
route-map ORIGINATOR_ID_CONFIG permit 10
match as-path 2
set originator-id [Router ID]
# 配置CLUSTER_LIST
router bgp [AS号]
neighbor [邻居IP地址] route-map CLUSTER_LIST_CONFIG in
route-map CLUSTER_LIST_CONFIG permit 10
set cluster-list [Cluster ID] additively
💡BGP的选路规则
丢弃不可达的路由: BGP首先会检查下一跳(NEXT_HOP)是否可达,如果不可达,则直接丢弃该路由。
Preferred-value值最大: BGP会优选Preferred-value值最大的路由。Preferred-value是一种用于指定BGP路由的优先级的属性。
本地优先级最高: 本地优先级(LOCAL_PREF)是BGP内部用于指定对于某个路由的偏好程度的属性,最高优先级的路由会被选择。
聚合路由: BGP会优选聚合路由,即通过聚合多个具体路由而生成的路由。
AS路径最短: BGP会优选AS路径(AS_PATH)最短的路由。较短的AS_PATH表示更直接的路径,通常被认为是更优越的。
ORIGIN类型选择: BGP会依次选择ORIGIN属性为IGP、EGP、Incomplete的路由。这涉及到路由的来源类型,IGP表示路由产生于本AS内部,EGP表示通过EGP协议学习,Incomplete表示来源无法确定。
MED值最低: BGP会优选MULTI_EXIT_DISC(MED)值最低的路由。较低的MED值通常被认为是更有吸引力的路径。
学习路由的来源: BGP会依次选择从EBGP、联盟、IBGP学来的路由。这表示BGP优先选择从外部学来的路由,然后是联盟(同一个AS内的其他BGP路由器学来的),最后是本地IBGP。
下一跳Cost值最低: BGP会优选下一跳Cost值最低的路由。这涉及到路由的下一跳(NEXT_HOP)的Cost值,较低的Cost值表示更经济的路径。
CLUSTER_LIST长度最短: BGP会优选CLUSTER_LIST长度最短的路由。CLUSTER_LIST属性用于防止路由反射导致的环路,长度较短的表示更直接的路径。
ORIGINATOR_ID最小: BGP会优选ORIGINATOR_ID最小的路由。ORIGINATOR_ID属性用于防止路由反射导致的环路。
Router ID最小: BGP会优选Router ID最小的路由器发布的路由。Router ID是BGP路由器的唯一标识。
地址最小: BGP会优选地址最小的对等体发布的路由。这表示在拥有相同属性的情况下,选择发布路由的对等体地址最小的。
总结
BGP路由属性作为BGP协议的核心组成部分,在互联网路由中扮演着关键的角色。本文详细探讨了BGP路由属性的分类和功能,以及它们在网络设计和优化中的重要性。
公认必须遵循属性,如ORIGIN、AS_PATH和NEXT_HOP,对于路由选择和防止环路至关重要。它们是BGP Update消息中必需存在的属性。
公认可选属性,例如LOCAL_PREF和ATOMIC_AGGREGATE,提供了更灵活的路由控制,允许网络管理员根据具体需求选择是否携带这些属性。
可选过渡属性,包括COMMUNITY和AGGREGATOR,允许BGP路由器在AS之间传递附加信息,实现更精细的路由控制和策略。
可选非过渡属性,如MED、ORIGINATOR_ID和CLUSTER_LIST,帮助提高网络的稳定性,防止路由环路的产生。
往期推荐